package com.xy.biz.uc.domain.bo;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.Set;

/**
 *
 *
 * @author zsp
 * @date 2020-8-19
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class UserBO {

	/**
	 * 用户Id
	 */
	private Long userId;
	/**
	 * 用户编码，登录名
	 */
	private String userCode;
	/**
	 * 显示名称
	 */
	private String userName;
	/**
	 * 显示名称(用于前端显示)
	 */
	private String value;
	/**
	 * 头像
	 */
	private String avatar;
	/**
	 * 手机号
	 */
	private String mobile;
	/**
	 * 邮箱
	 */
	private String email;
	/**
	 * 用户类型：0-客户，1-商家，2-平台，3-运维
	 */
	private Integer type;
	/**
	 * 用户状态
	 */
	private Integer status;
	/**
	 * 租户Id，0表示不指定
	 */
	private Long tenantId;
	/**
	 * 创建人用户Id
	 */
	private Long createUserId;
	/**
	 * 创建时间
	 */
	private LocalDateTime createTime;
	/**
	 * 更新时间
	 */
	private LocalDateTime updateTime;
	/**
	 * 初始密码
	 */
	private String initialPassword;
	/**
	 * 角色Id集合
	 */
	private List<Long> roleIdList;
	/**
	 * 角色集合
	 */
	private Set<RoleBO> roleBOSet;
	/**
	 * 资源集合
	 */
	private Set<ResourceBO> resourceBOSet;
	/**
	 * 部门Id
	 */
	private Long userGroupId;
	/**
	 * 部门
	 */
	private UserGroupBO userGroupBO;

	/**
	 * 状态：0-邀请中，1-已加入
	 */
	private Integer joinStatus;
	/**
	 * 加入时间
	 */
	private LocalDateTime joinTime;

	@Override
	public boolean equals(Object o) {
		if (this == o) return true;
		if (o == null || getClass() != o.getClass()) return false;
		UserBO that = (UserBO) o;
		return userId.equals(that.userId);
	}

	@Override
	public int hashCode() {
		return Objects.hash(userId);
	}

}
